package cn.itcast.hiss.form.mapper;

import cn.itcast.hiss.form.pojo.HissFormModel;
import cn.itcast.hiss.form.pojo.HissFormTableFields;
import cn.itcast.hiss.form.pojo.HissFormTables;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.Map;

public interface HissDynamicTableMapper {

    public int createTable(@Param("hissFormModel") HissFormModel hissFormModel, @Param("mainTables") HissFormTables mainTables);

    void createField(@Param("mainTables") HissFormTables table,@Param("field")  HissFormTableFields hissFormTableFields);

    // 删除物理表
    @Delete("DROP TABLE IF EXISTS `${mainTables.tablePhysicalName}`")
    public int dropTable(@Param("mainTables") HissFormTables mainTables);

    // 删除物理字段
    @Delete(" ALTER TABLE `${mainTables.tablePhysicalName}` DROP COLUMN `${field}`")
    public int dropField(@Param("mainTables") HissFormTables mainTables,@Param("field") String field);

    // 向物理表插入一条默认的数据，主键为传入参数dataId的值
    @Insert("insert into `${mainTable.tablePhysicalName}` (`id`,`user_id`) values (#{dataId},#{userId})")
    int createData(@Param("mainTable") HissFormTables mainTable, @Param("dataId") String dataId, @Param("userId") String userId);

    // 修改物理表中的数据
    int updateData(@Param("mainTable") HissFormTables mainTable, @Param("dataId") String dataId, @Param("data") Map<String,Object> data);

    // 查询数据
    @Select("select * from `${mainTable.tablePhysicalName}` where id=#{dataId}")
    Map<String,Object> getData(@Param("mainTable") HissFormTables mainTable, @Param("dataId") String dataId);
}
